//
//  Problem1736.swift
//  TestProject
//
//  Created by 毕武侠 on 2021/3/28.
//  Copyright © 2021 zhulong. All rights reserved.
//

import UIKit

/*
 1736. 替换隐藏数字得到的最晚时间
 给你一个字符串 time ，格式为 hh:mm（小时：分钟），其中某几位数字被隐藏（用 ? 表示）。

 有效的时间为 00:00 到 23:59 之间的所有时间，包括 00:00 和 23:59 。

 替换 time 中隐藏的数字，返回你可以得到的最晚有效时间。

 示例 1：
     输入：time = "2?:?0"
     输出："23:50"
     解释：以数字 '2' 开头的最晚一小时是 23 ，以 '0' 结尾的最晚一分钟是 50 。
 示例 2：
     输入：time = "0?:3?"
     输出："09:39"
 示例 3：
     输入：time = "1?:22"
     输出："19:22"
 提示：
     time 的格式为 hh:mm
     题目数据保证你可以由输入的字符串生成有效的时间
 */
@objcMembers class Problem1736: NSObject {
    func solution() {
        print(maximumTime("2?:?0"))     // "23:50"
        print(maximumTime("0?:3?"))     // "09:39"
        print(maximumTime("1?:22"))     // "19:22"
        print(maximumTime("2?:??"))     // "23:59"
        print(maximumTime("??:?0"))     // "23:50"
        print(maximumTime("??:??"))     // "23:59"
        print(maximumTime("?4:03"))     // "14:03"
        
    }
    /*
     ??:??
     第一个是？的话：第二个>3,给他1， 其他给他2
     第二个是？的话：如果第一个是0给他9， 第一个是1给他9 第一个是2给他3
     第三个是？的话：给他5
     第四个是？的话：给他9
     */
    func maximumTime(_ time: String) -> String {
        var charts = Array(time)
        if charts[0] == "?" {
            if charts[1] == "?"  {
                charts[0] = "2"
            } else if charts[1] > "3" {
                charts[0] = "1"
            } else {
                charts[0] = "2"
            }
        }
        if charts[1] == "?" {
            if charts[0] == "0" || charts[0] == "1" {
                charts[1] = "9"
            } else if charts[0] == "2" {
                charts[1] = "3"
            }
        }
        if charts[2] != ":" {
            charts[2] = ":"
        }
        if charts[3] == "?" {
            charts[3] = "5"
        }
        if charts[4] == "?" {
            charts[4] = "9"
        }
        
        return String(charts)
    }
}
